﻿using System;
using System.Data;
using Insifo.WE;

public partial class segAccesoCambiarClave : ObjectPage
{
    /// <summary>
    /// Carga la Pagina
    /// </summary> 
    /// <returns></returns>
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            Response.AddHeader("Pragma", "no-cache");
            Response.AddHeader("Pragma", "no-store");
            Response.AddHeader("cache-control", "no-cache");
            Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
            Response.Cache.SetNoStore();

            Cargar();

        }
    }


    protected void btnAceptar_Click(object sender, EventArgs e)
    {
        ValidaUsuario();
        //ValidarIngreso();
        //UsuarioSistema.
    }

    protected void Cargar()
    {
        //Carga Configuracion
        ConfiguraVista(true);

        var lsUsuario = UsuarioSistema.CodigoUsuario;   //Request.QueryString["s"];
        hfUsuario.Value = lsUsuario;
    }

    protected void btnValidar_Click(object sender, EventArgs e)
    {
        ValidaUsuario();
    }

    protected void btnUsuario_Click(object sender, EventArgs e)
    {
        //CargaCompania();
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/gen/genAplicaciones.aspx");
    }
    protected void btnInicio_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/seg/segAcceso.aspx");
    }

    protected void ValidaUsuario()
    {
        string strClaveAngterior = string.Empty, strClave = string.Empty, strClaveConfirmar = string.Empty, strMensaje = string.Empty;
        Encripta enc = new Encripta();

        strClaveAngterior = txtClaveAnterio.Text.Trim();
        strClave = txtClave.Text.Trim();
        strClaveConfirmar = txtClaveConfirmar.Text.Trim();
        //Obtener Usuario
        var be = ObtenerUsuario(hfUsuario.Value);
        //Validar Clave Anterior
        string lsClaveAnteriorBd = enc.DesencriptarCadena(be.Clave);

        if (string.IsNullOrEmpty(strClaveAngterior))
        {
            this.lblMensaje.Text = Resources.resMensaje.msgAlertaIngresarClaveAnterior; //"Ingrese clave Anterior.";
            return;
        }
        if (string.IsNullOrEmpty(strClave))
        {
            this.lblMensaje.Text = Resources.resMensaje.msgAlertaIngresarClave; //"Ingrese clave.";
            return;
        }
        if (string.IsNullOrEmpty(strClaveConfirmar))
        {
            this.lblMensaje.Text = Resources.resMensaje.msgAlertaIngresarClaveConfirmar; // "Ingrese confirmar clave.";
            return;
        }
        //Validar Clave anterior
        if (!lsClaveAnteriorBd.Equals(strClaveAngterior))
        {
            this.lblMensaje.Text = Resources.resMensaje.msgAlertaClaveDiferenteAnterior; // "La clave nueva no es igual a la clave anterior.";
            return;
        }

        if (!strClave.Equals(strClaveConfirmar))
        {
            this.lblMensaje.Text = Resources.resMensaje.msgAlertaClaveDiferente; // "Claves no son iguales.";
            return;
        }

        //Cambiar clave usuario
        //WCUsuario.BEUsuario be = new WCUsuario.BEUsuario();
        be.Clave = enc.EncriptarCadena(strClave);
        be.CodigoUsuario = hfUsuario.Value;
        be.UsuarioModificacion = hfUsuario.Value;

        be = ActualizarUsuario(be);

        if (be.Error < 0)
        {
            lblMensaje.Text = Resources.resMensaje.msgErrorActualizarClave;
            return;
        }
        else
        {
            lblMensaje.Text = Resources.resMensaje.msgInformacionClaveCambiado;
        }
        txtClaveAnterio.Visible = false;        
        txtClaveAnterio1.Enabled = false;
        txtClaveAnterio1.Visible = true;
        txtClaveAnterio1.Text = "**********";

        txtClaveConfirmar.Text = string.Empty;
        txtClave.Visible = false;
        txtClave0.Visible = true;
        txtClave0.Text = "**********";
        txtClaveConfirmar0.Text = "**********";
        btnAceptar.Visible = false;
        btnCancelar.Visible = false;
        btnInicio.Visible = true;
        ConfiguraVista(false);
    }


    protected void ConfiguraVista(bool pboolVistaInicial)
    {
        txtClaveConfirmar0.Enabled = false;
        if (pboolVistaInicial)
        {
            //trAceptar.Visible = false;
            txtClaveConfirmar0.Visible = false;
            txtClaveConfirmar.Visible = true;
            txtClaveConfirmar.Enabled = true;
        }
        else
        {
            trAceptar.Visible = true;
            txtClave.Enabled = false;
            txtClaveConfirmar.Enabled = false;
            txtClaveConfirmar.Visible = false;
            txtClaveConfirmar0.Visible = true;
        }
    }

    #region LLAMDAS A WEBSERVICES

    /// <summary>
    /// Método Valida el Usuario
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCCompania.BECompania ObtenerCompania(int pintIdCompania)
    {
        WCCompania.BECompania be = new WCCompania.BECompania();
        be.IdCompania = pintIdCompania;
        using (var client = new ServiceClient<WCCompania.IWCCompania>("BasicHttpBinding_IWCCompania"))
        {
            var response = client.ServiceOperation<WCCompania.BECompania>(c => c.Obtener(be));
            be = response;
        }
        return be;
    }
    
    /// <summary>
    /// Método Actualiza informacion usuario
    /// </summary>
    /// <returns>Devuelve BEusuario</returns>
    protected WCUsuario.BEUsuario ActualizarUsuario(WCUsuario.BEUsuario pbe)
    {
        WCUsuario.BEUsuario be = new WCUsuario.BEUsuario();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCUsuario.IWCUsuario>("BasicHttpBinding_IWCUsuario"))
        {
            var response = client.ServiceOperation<WCUsuario.BEUsuario>(
               c => c.Actualizar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Recuperar informacion del usuario
    /// </summary>
    /// <returns>Devuelve BEusuario</returns>
    protected WCUsuario.BEUsuario ObtenerUsuario(string pstrUsuario)
    {
        WCUsuario.BEUsuario pbe = new WCUsuario.BEUsuario();
        pbe.CodigoUsuario = pstrUsuario;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCUsuario.IWCUsuario>("BasicHttpBinding_IWCUsuario"))
        {
            var response = client.ServiceOperation<WCUsuario.BEUsuario>(
               c => c.Obtener(pbe)
               );
            ;
            pbe = response;
        }
        return pbe;
    }
    #endregion

}